package net.sinmetal.twitcockpit.util;

import java.util.Calendar;
import java.util.Date;

/**
 * 日付に関するUtil
 *
 * @author Sinmetal
 *
 */
public class DateUtil {

    private static DateUtilInterface defaultDateUtilDelegate;

    static {
        initialize();
    }

    static void initialize() {
        defaultDateUtilDelegate = new DateUtilDelegate();
    }

    /**
     * DateUtilDelegateを設定する <br />
     * テスト時に、現在時刻を固定したい場合などに利用する
     *
     * @param dateUtilInterface
     */
    public static void setDateUtilDelegate(DateUtilInterface dateUtilInterface) {
        defaultDateUtilDelegate = dateUtilInterface;
    }

    /**
     * 現在日時を返す
     *
     * @return
     */
    public static Date getNow() {
        return defaultDateUtilDelegate.getNow();
    }

    /**
     * Localeに応じたCalendarを返す
     *
     * @return
     */
    public static Calendar getLocaleCalendar() {
        return defaultDateUtilDelegate.getLocaleCalendar();
    }

    /**
     * 日付を指定されたパターンの文字列にフォーマット
     *
     * @param date
     * @param pattern
     * @return
     */
    public static String format(Date date, String pattern) {
        return org.slim3.util.DateUtil.toString(date, pattern);
    }
}
